package com.tzy.note.base.jvm;

/**
 * -Xss：可以指定线程栈的大小
 * -Xss设置越小count值越小，说明一个线程栈里能分配的栈帧就越少，但是对JVM整体来说能开启的线程数会更多
 * -Xss设置越大，对JVM整体来说能开启的线程数会越少
 * 假设栈内存区大小为500M，给每一个线程分配的空间是1M，那就是整个JVM进程只能开启500个线程
 * 要在相同的内存分配情况下，想要开启更多的线程，可以把-Xss调小一点(调成‐Xss128k)
 *
 * 方法区(1.8及之后)不占用JVM里的内存
 * 而是使用直接内存，就是直接使用物理内存(如：电脑有16G内存，给JVM分配4G，方法区就从16-4G中剩余的内存中取)
 *
 */
public class StackOverflowTest {
    // JVM设置 ‐Xss128k(默认1M)  当前线程栈大小
    static int count = 0;

    static void redo() {
        count++;
        redo();
    }
    public static void main(String[] args) {
        try {
            redo();
        } catch (Throwable t) {
            t.printStackTrace();
            System.out.println(count);
        }
    }
}
